- •Внимание!
- •Об авторах
- •О техническом редакторе
- •О соавторах
- •Предисловие
- •Благодарности
- •Отдельное спасибо
- •Введение
- •Необходимая квалификация
- •Изучение на примерах
- •Структура книги
- •Глава 0. Анализ вредоносных программ для начинающих
- •Цель анализа вредоносных программ
- •Методики анализа вредоносного ПО
- •Общие правила анализа вредоносного ПО
- •Глава 1. Основные статические методики
- •Сканирование антивирусом: первый шаг
- •Хеширование: отпечатки пальцев злоумышленника
- •Поиск строк
- •Упакованное и обфусцированное вредоносное ПО
- •Формат переносимых исполняемых файлов
- •Компонуемые библиотеки и функции
- •Статический анализ на практике
- •Заголовки и разделы PE-файла
- •Итоги главы
- •Глава 2. Анализ вредоносных программ в виртуальных машинах
- •Структура виртуальной машины
- •Запуск виртуальной машины для анализа вредоносного ПО
- •Использование виртуальной машины для анализа безопасности
- •Риски при использовании VMware для анализа безопасности
- •Запись/воспроизведение работы компьютера
- •Итоги главы
- •Глава 3. Основы динамического анализа
- •Песочницы: решение на скорую руку
- •Запуск вредоносных программ
- •Мониторинг с помощью Process Monitor
- •Сравнение снимков реестра с помощью Regshot
- •Симуляция сети
- •Перехват пакетов с помощью Wireshark
- •Использование INetSim
- •Применение основных инструментов для динамического анализа
- •Итоги главы
- •Уровни абстракции
- •Архитектура x86
- •Итоги главы
- •Глава 5. IDA Pro
- •Загрузка исполняемого файла
- •Интерфейс IDA Pro
- •Использование перекрестных ссылок
- •Анализ функций
- •Схематическое представление
- •Повышение эффективности дизассемблирования
- •Плагины к IDA Pro
- •Итоги главы
- •Глава 6. Распознавание конструкций языка C в ассемблере
- •Переменные: локальные и глобальные
- •Дизассемблирование арифметических операций
- •Распознавание выражений if
- •Распознавание циклов
- •Соглашения, касающиеся вызова функций
- •Анализ выражений switch
- •Дизассемблирование массивов
- •Распознавание структур
- •Анализ обхода связного списка
- •Итоги главы
- •Глава 7. Анализ вредоносных программ для Windows
- •Windows API
- •Реестр Windows
- •API для работы с сетью
- •Отслеживание запущенной вредоносной программы
- •Сравнение режимов ядра и пользователя
- •Native API
- •Итоги главы
- •Глава 8. Отладка
- •Сравнение отладки на уровне исходного и дизассемблированного кода
- •Отладка на уровне ядра и пользователя
- •Использование отладчика
- •Исключения
- •Управление выполнением с помощью отладчика
- •Изменение хода выполнения программы на практике
- •Итоги главы
- •Глава 9. OllyDbg
- •Загрузка вредоносного ПО
- •Пользовательский интерфейс OllyDbg
- •Карта памяти
- •Просмотр потоков и стеков
- •Выполнение кода
- •Точки останова
- •Трассировка
- •Обработка исключений
- •Редактирование кода
- •Анализ кода командной оболочки
- •Вспомогательные возможности
- •Подключаемые модули
- •Отладка с использованием скриптов
- •Итоги главы
- •Драйверы и код ядра
- •Подготовка к отладке ядра
- •Использование WinDbg
- •Отладочные символы Microsoft
- •Отладка ядра на практике
- •Руткиты
- •Загрузка драйверов
- •Итоги главы
- •Глава 11. Поведение вредоносных программ
- •Программы для загрузки и запуска ПО
- •Бэкдоры
- •Похищение учетных данных
- •Механизм постоянного присутствия
- •Повышение привилегий
- •Заметая следы: руткиты, работающие в пользовательском режиме
- •Итоги главы
- •Глава 12. Скрытый запуск вредоносного ПО
- •Загрузчики
- •Внедрение в процесс
- •Подмена процесса
- •Внедрение перехватчиков
- •Detours
- •Внедрение асинхронных процедур
- •Итоги главы
- •Глава 13. Кодирование данных
- •Простые шифры
- •Распространенные криптографические алгоритмы
- •Нестандартное кодирование
- •Декодирование
- •Итоги главы
- •Глава 14. Сетевые сигнатуры, нацеленные на вредоносное ПО
- •Сетевые контрмеры
- •Безопасное расследование вредоносной деятельности в Интернете
- •Контрмеры, основанные на сетевом трафике
- •Углубленный анализ
- •Сочетание динамических и статических методик анализа
- •Понимание психологии злоумышленника
- •Итоги главы
- •Искажение алгоритмов дизассемблирования
- •Срыв анализа слоя стека
- •Итоги главы
- •Глава 16. Антиотладка
- •Обнаружение отладчика в Windows
- •Распознавание поведения отладчика
- •Искажение работы отладчика
- •Уязвимости отладчиков
- •Итоги главы
- •Глава 17. Методы противодействия виртуальным машинам
- •Признаки присутствия VMware
- •Уязвимые инструкции
- •Изменение настроек
- •Побег из виртуальной машины
- •Итоги главы
- •Глава 18. Упаковщики и распаковка
- •Анатомия упаковщика
- •Распознавание упакованных программ
- •Способы распаковки
- •Автоматизированная распаковка
- •Ручная распаковка
- •Советы и приемы для работы с распространенными упаковщиками
- •Анализ без полной распаковки
- •Итоги главы
- •Глава 19. Анализ кода командной оболочки
- •Загрузка кода командной оболочки для анализа
- •Позиционно-независимый код
- •Определение адреса выполнения
- •Поиск символов вручную
- •Окончательная версия программы Hello World
- •Кодировки кода командной оболочки
- •NOP-цепочки
- •Поиск кода командной оболочки
- •Итоги главы
- •Глава 20. Анализ кода на C++
- •Объектно-ориентированное программирование
- •Обычные и виртуальные функции
- •Создание и уничтожение объектов
- •Итоги главы
- •Какой смысл в 64-битном вредоносном ПО?
- •Особенности архитектуры x64
- •Признаки вредоносного кода на платформе x64
- •Итоги главы
- •Приложения
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
w |
|
|
to |
|
|
78 Часть I • Базовый анализ |
||||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Перехват пакетов с помощью Wireshark
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Wireshark — это открытый сниффер, инструмент для перехвата и записи сетевого трафика. Он поддерживает визуализацию, анализ сетевых потоков и углубленное исследование отдельных пакетов.
Подобно многим инструментам, описанным в этой книге, Wireshark может быть использован как во благо, так и во вред. С его помощью можно анализировать внутренние сети и их загруженность, отлаживать программные проблемы и изучать протоколы на практике. Однако эту утилиту можно также применять для перехвата паролей, разбора сетевых протоколов, хищения конфиденциальной информации и прослушивания онлайн-разговоров в местном кафе.
Как видно на рис. 3.10, Wireshark состоит из четырех элементов.
Поле ввода Filter (Фильтр) используется для фильтрации отображаемых пакетов.
Список пакетов выводит все пакеты, соответствующие заданному фильтру. На панели с подробностями отображается содержимое выбранного пакета
(в данном случае это пакет 47).
Нижняя панель выводит содержимое пакета в шестнадцатеричном виде. Она связана с панелью и выделяет любое поле, которое вы выберете.
Рис. 3.10. Пример анализа DNS и HTTP с помощью Wireshark
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Глава 3. Основы динамического анализа
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
w79 |
to |
|
|
|
|
|
||||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Чтобы просмотреть в Wireshark содержимое TCP-сессии, щелкните правой кнопкой мыши на TCP-пакете и выберите пункт Follow TCP Stream (Следить за TCPпотоком). Как можно видеть на рис. 3.11, обе стороны соединения выделяются разными цветами и выводятся в том порядке, в котором они участвуют в сессии.
Рис. 3.11. Окно отслеживания TCP-пoтока в Wireshark
Чтобы перехватить пакеты, щелкните на пункте меню Capture Interfaces (Захва тить Интерфейс) и выберите интерфейс, который хотите прослушивать. Вы можете захватывать все пакеты без разбора или применить фильтр.
ПРЕДУПРЕЖДЕНИЕ
Программа Wireshark известна своими многочисленными уязвимостями, поэтому убедитесь в том, что она выполняется в безопасной среде.
Wireshark может помочь вам разобраться в сетевом взаимодействии вредоноса, перехватывая его пакеты. Для этого необходимо подключиться к Интернету или симулировать интернет-соединение (в этом вам поможет Netcat), активизировать захват пакетов в Wireshark и запустить вредоносную программу.
Использование INetSim
INetSim — это бесплатный программный пакет на основе Linux, предназначенный для симуляции распространенных интернет-служб. Если в качестве основной операционной системы используется Microsoft Windows, INetSim проще всего запустить
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
w |
|
|
to |
|
|
80 Часть I • Базовый анализ |
||||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
в виртуальной машине, подключенной к той же виртуальной сети, что и система для анализа безопасности.
INetSim является лучшим бесплатным инструментом для предоставления поддельных служб. Он позволяет анализировать сетевую активность неизвестных вредоносных образцов путем эмуляции серверов, работающих по протоколам HTTP, HTTPS, FTP, IRC, DNS, SMTP и т. д. В листинге 3.3 показан список всех служб, которые INetSim эмулирует по умолчанию. Этот список (вместе со стандартными портами) выводится при запуске данной программы.
Листинг 3.3. Службы, которые INetSim эмулирует по умолчанию
*dns 53/udp/tcp - started (PID 9992)
*http 80/tcp - started (PID 9993)
*https 443/tcp - started (PID 9994)
*smtp 25/tcp - started (PID 9995)
*irc 6667/tcp - started (PID 10002)
*smtps 465/tcp - started (PID 9996)
*ntp 123/udp - started (PID 10003)
*pop3 110/tcp - started (PID 9997)
*finger 79/tcp - started (PID 10004)
*syslog 514/udp - started (PID 10006)
*tftp 69/udp - started (PID 10001)
*pop3s 995/tcp - started (PID 9998)
*time 37/tcp - started (PID 10007)
*ftp 21/tcp - started (PID 9999)
*ident 113/tcp - started (PID 10005)
*time 37/udp - started (PID 10008)
*ftps 990/tcp - started (PID 10000)
*daytime 13/tcp - started (PID 10009)
*daytime 13/udp - started (PID 10010)
*echo 7/tcp - started (PID 10011)
*echo 7/udp - started (PID 10012)
*discard 9/udp - started (PID 10014)
*discard 9/tcp - started (PID 10013)
*quotd 17/tcp - started (PID 10015)
*quotd 17/udp - started (PID 10016)
*chargen 19/tcp - started (PID 10017)
*dummy 1/udp - started (PID 10020)
*chargen 19/udp - started (PID 10018)
*dummy 1/tcp - started (PID 10019)
Программа INetSim делает все возможное, чтобы выглядеть как настоящий сервер — для этого в ней предусмотрено множество настраиваемых функций. Например, если ее сканируют, она по умолчанию возвращает заголовок с названием веб-сервера Microsoft IIS.
Особенно полезны ее способности, связанные с симуляцией HTTP- и HTTPSслужб. Например, INetSim может вернуть любой запрошенный файл: если для продолжения работы вредоносный код должен получить на сайте JPEG-изображение, INetSim вернет корректный файл в этом формате. И хотя это может быть совсем не та картинка, которая запрашивалась, сервер не ответил кодом ошибки (например, 404), поэтому вредонос может продолжить работу.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Глава 3. Основы динамического анализа
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
w81 |
to |
|
|
|
|
|
||||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
INetSim может также записывать все входящие запросы и соединения. Это очень поможет, когда нужно определить, подключается ли вредонос к стандартной службе, или просмотреть выполняемые им запросы. Настройки этой утилиты очень гибкие. Например, если для продолжения работы вредоносу требуется получить определенную страницу, вы можете указать ее в качестве ответа на его запрос. Вы также можете изменить порт, на котором работает та или иная служба, что может пригодиться, если вредонос использует нестандартные порты.
Пакет INetSim разрабатывался с оглядкой на анализ зловредного ПО, поэтому он обладает множеством уникальных возможностей, таких как фиктивная служба, которая записывает все данные, полученные от клиента, независимо от порта. Эта функция отлично подходит для захвата всего клиентского трафика, посланного на порты, не привязанные ни к каким другим служебным модулям. С ее помощью можно прослушивать все порты, к которым подключается вредонос, и сохранять всю передаваемую им информацию. Это позволяет как минимум начать сеанс TCP и собрать дополнительные сведения.
Применение основных инструментов для динамического анализа
Все инструменты, описанные в данной главе, можно использовать совместно, чтобы максимизировать объем информации, полученной в результате динамического анализа. В этом разделе мы представим на их основе демонстрационную конфигурацию для анализа вредоносов. Для этого нужно будет выполнить следующие шаги.
1.Запустить procmon, установить фильтр с именем исполняемого файла и очистить все события, записанные ранее.
2.Запустить Process Explorer.
3.Сделать первый снимок реестра с помощью Regshot.
4.Настроить виртуальную сеть по своему вкусу, используя INetSim и ApateDNS.
5.Активизировать запись сетевого трафика с использованием Wireshark.
На рис. 3.12 показана схема виртуальной сети, которую можно использовать для анализа вредоносов. Она состоит из двух виртуальных машин: первая работает под управлением Windows и предназначена для выполнения анализа, а на второй запущены Linux и INetSim. Виртуальная машина с Linux прослушивает множество портов, включая HTTPS, FTP и HTTP. Гостевая система для анализа использует ApateDNS, чтобы прослушивать порт 53 и перехватывать DNS-запросы. DNS-сервер в системе Windows был сконфигурирован для локальной работы (127.0.0.1). Программа ApateDNS настроена для перенаправления запросов к виртуальной машине с Linux (192.168.117.169).
Если вы попытаетесь открыть веб-сайт в виртуальной машине с Windows, ApateDNS перехватит DNS-запрос и перенаправит вас к гостевой системе под управлением Linux. Затем браузер выполнит запрос GET по порту 80, который будет направлен серверу INetSim, прослушивающему этот порт.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
w |
|
|
to |
|
|
82 Часть I • Базовый анализ |
||||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Рис. 3.12. Пример виртуальной сети
Посмотрим, как эта конфигурация работает на практике. Исследуем для этого вредонос msts.exe. Закончим начальную настройку и запустим msts.exe на виртуальной машине для анализа безопасности. Через какое-то время остановим захват событий в procmon и сделаем второй снимок с помощью Regshot. Начинаем анализировать следующим образом.
1. |
Изучим окно ApateDNS, чтобы прове- |
|
|
рить, не было ли выполнено каких-либо |
|
|
DNS-запросов. Как видно на рис. 3.13, вредо |
|
|
нос запросил доменное имя www.malwareana |
|
|
lysisbook.com. |
Рис. 3.13. Запрос |
2. |
Попробуем найти системные изменения |
для www.malwareanalysisbook.com |
|
в результатах procmon. На рис. 3.14 можно |
в ApateDNS |
видеть операции CreateFile и WriteFile
(порядковые номера 141 и 142) для файла C:\WINDOWS\system32\winhlp2.exe. В ходе дальнейшего исследования мы сравним файлы winhlp2.exe и msts.exe и обнаружим, что они идентичны. Делаем вывод, что вредонос скопировал себя по вышеупомянутому пути.
Рис. 3.14. Вывод procmon с фильтрацией по msts.exe
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Глава 3. Основы динамического анализа
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
w83 |
to |
|
|
|
|
|
||||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
3.Сравним два снимка, сделанных с помощью Regshot, чтобы найти изменения. Изучив результаты, представленные ниже, можно заметить, что вредонос прописал себя в ключе winhlp в ветке реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ Run, чтобы запускаться автоматически. Значением этого ключа будет путь, по которому вредонос себя скопировал (C:\WINDOWS\system32\winhlp2.exe). Этот новый двоичный файл будет загружаться при перезагрузке системы.
Values added:3
----------------------------------
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\winhlp: C:\WINDOWS\ system32\winhlp2.exe
4.Используем Process Explorer, чтобы изучить процесс и определить, создает ли он мьютексы и ожидает ли входящие подключения. На рис. 3.15 видно, что файл
msts.exe создает мьютекс с именем Evil1 . Мы подробно рассмотрим мьютексы в главе 7, но вы должны знать, что сделал он это для того, чтобы в системе одновременно мог выполняться лишь один экземпляр вредоноса. Мьютексы могут служить отличным признаком вредоносного кода, если они обладают достаточной уникальностью.
Рис. 3.15. Анализ активного процесса msts.exe с помощью Process Explorer